HAL SAI constants migration

This section provides information about the HAL SAI constants migration .

HAL SAI error codes constants

HAL1

HAL2

#define HAL_SAI_ERROR_AFSDET
#define HAL_SAI_ERROR_CNREADY
#define HAL_SAI_ERROR_DMA
#define HAL_SAI_ERROR_LFSDET
#define HAL_SAI_ERROR_NONE
#define HAL_SAI_ERROR_OVR
#define HAL_SAI_ERROR_TIMEOUT
#define HAL_SAI_ERROR_UDR
#define HAL_SAI_ERROR_WCKCFG

#define HAL_SAI_ERROR_INVALID_CALLBACK
#define HAL_SAI_ERROR_AFSDET
#define HAL_SAI_ERROR_CNREADY
#define HAL_SAI_ERROR_DMA
#define HAL_SAI_ERROR_LFSDET
#define HAL_SAI_ERROR_NONE
#define HAL_SAI_ERROR_OVR
#define HAL_SAI_ERROR_TIMEOUT
#define HAL_SAI_ERROR_UDR
#define HAL_SAI_ERROR_WCKCFG

Removed; these kinds of logical errorsare reported by direct function return.

Related concept:


HAL SAI protocol constants

HAL1

HAL2



#define SAI_AC97_PROTOCOL
#define SAI_FREE_PROTOCOL
#define SAI_SPDIF_PROTOCOL
typedef enum
{
  HAL_SAI_PROTOCOL_AC97,
  HAL_SAI_PROTOCOL_FREE,
  HAL_SAI_PROTOCOL_SPDIF
} hal_sai_protocol_t;

Related concept:


HAL SAI audio frequency constants

HAL1

HAL2



#define SAI_AUDIO_FREQUENCY_11K
#define SAI_AUDIO_FREQUENCY_16K
#define SAI_AUDIO_FREQUENCY_192K
#define SAI_AUDIO_FREQUENCY_22K
#define SAI_AUDIO_FREQUENCY_32K
#define SAI_AUDIO_FREQUENCY_44K
#define SAI_AUDIO_FREQUENCY_48K
#define SAI_AUDIO_FREQUENCY_8K
#define SAI_AUDIO_FREQUENCY_96K
#define SAI_AUDIO_FREQUENCY_MCKDIV
typedef enum
{
  HAL_SAI_AUDIO_FREQUENCY_11KHZ,
  HAL_SAI_AUDIO_FREQUENCY_16KHZ,
  HAL_SAI_AUDIO_FREQUENCY_192KHZ,
  HAL_SAI_AUDIO_FREQUENCY_22KHZ,
  HAL_SAI_AUDIO_FREQUENCY_32KHZ,
  HAL_SAI_AUDIO_FREQUENCY_44KHZ,
  HAL_SAI_AUDIO_FREQUENCY_48KHZ,
  HAL_SAI_AUDIO_FREQUENCY_8KHZ,
  HAL_SAI_AUDIO_FREQUENCY_96KHZ,
  HAL_SAI_AUDIO_FREQUENCY_MCLK_DIV
} hal_sai_audio_frequency_t;

Related concept:


HAL SAI clock strobing constants

HAL1

HAL2



#define SAI_CLOCKSTROBING_FALLINGEDGE
#define SAI_CLOCKSTROBING_RISINGEDGE
typedef enum
{
  HAL_SAI_CLOCK_STROBING_FALLING_EDGE,
  HAL_SAI_CLOCK_STROBING_RISING_EDGE
} hal_sai_clock_strobing_edge_t;

Related concept:


HAL SAI data size constants

HAL1

HAL2



#define SAI_DATASIZE_10
#define SAI_DATASIZE_16
#define SAI_DATASIZE_20
#define SAI_DATASIZE_24
#define SAI_DATASIZE_32
#define SAI_DATASIZE_8
typedef enum
{
  HAL_SAI_DATA_SIZE_10BITS,
  HAL_SAI_DATA_SIZE_16BITS,
  HAL_SAI_DATA_SIZE_20BITS,
  HAL_SAI_DATA_SIZE_24BITS,
  HAL_SAI_DATA_SIZE_32BITS,
  HAL_SAI_DATA_SIZE_8BITS
} hal_sai_data_size_t;

Related concept:


HAL SAI FIFO status flags constants

HAL1

HAL2

#define SAI_FIFOSTATUS_1QUARTERFULL
#define SAI_FIFOSTATUS_3QUARTERFULL
#define SAI_FIFOSTATUS_EMPTY
#define SAI_FIFOSTATUS_FULL
#define SAI_FIFOSTATUS_HALFFULL
#define SAI_FIFOSTATUS_LESS1QUARTERFULL

In HAL2, the FIFO status flag enumerations are used internally by the SAI driver.


HAL SAI FIFO threshold constants

HAL1

HAL2



#define SAI_FIFOTHRESHOLD_1QF
#define SAI_FIFOTHRESHOLD_3QF
#define SAI_FIFOTHRESHOLD_EMPTY
#define SAI_FIFOTHRESHOLD_FULL
#define SAI_FIFOTHRESHOLD_HF
typedef enum
{
  HAL_SAI_FIFO_THRESHOLD_1_4,
  HAL_SAI_FIFO_THRESHOLD_3_4,
  HAL_SAI_FIFO_THRESHOLD_EMPTY,
  HAL_SAI_FIFO_THRESHOLD_FULL,
  HAL_SAI_FIFO_THRESHOLD_1_2
} hal_sai_fifo_threshold_t;

Related concept:


HAL SAI first bit constants

HAL1

HAL2



#define SAI_FIRSTBIT_LSB
#define SAI_FIRSTBIT_MSB
typedef enum
{
  HAL_SAI_BIT_ORDER_LSB,
  HAL_SAI_BIT_ORDER_MSB
} hal_sai_bit_order_t;

Related concept:


HAL SAI status flags constants

HAL1

HAL2

#define SAI_FLAG_AFSDET
#define SAI_FLAG_CNRDY
#define SAI_FLAG_FREQ
#define SAI_FLAG_LFSDET
#define SAI_FLAG_MUTEDET
#define SAI_FLAG_OVRUDR
#define SAI_FLAG_WCKCFG
#define HAL_SAI_FLAG_AFSDET
#define HAL_SAI_FLAG_CNRDY
#define HAL_SAI_FLAG_FREQ
#define HAL_SAI_FLAG_LFSDET
#define HAL_SAI_FLAG_MUTEDET
#define HAL_SAI_FLAG_OVRUDR
#define HAL_SAI_FLAG_WCKCFG

Related concept:


HAL SAI frame synchronization constants

HAL1

HAL2



#define SAI_FS_ACTIVE_HIGH
#define SAI_FS_ACTIVE_LOW




#define SAI_FS_BEFOREFIRSTBIT
#define SAI_FS_FIRSTBIT




#define SAI_FS_CHANNEL_IDENTIFICATION
#define SAI_FS_STARTFRAME
typedef enum
{
  HAL_SAI_FS_POLARITY_RISING,
  HAL_SAI_FS_POLARITY_FALLING
} hal_sai_fs_polarity_t;

typedef enum
{
  HAL_SAI_FS_BEFORE_FIRST_BIT,
  HAL_SAI_FS_FIRST_BIT
} hal_sai_fs_offset_t;

typedef enum
{
  HAL_SAI_FS_CHANNEL_IDENTIFICATION,
  HAL_SAI_FS_START_FRAME
} hal_sai_fs_definition_t;

Related concept:


HAL SAI supported protocol constants

HAL1

HAL2

The SAI supported protocol constants have been used by the HAL_SAI_InitProtocol() function to specify which protocol will be used.

The function HAL_SAI_InitProtocol() is no longer available, and these defines have been removed. The user can configure the SAI protocol within the HAL_SAI_SetConfig() function.

See also how to migrate the HAL_SAI_InitProtocol() function to HAL2 code : HAL SAI initialization protocol function.

#define SAI_I2S_STANDARD
#define SAI_I2S_MSBJUSTIFIED
#define SAI_I2S_LSBJUSTIFIED
#define SAI_PCM_SHORT
#define SAI_PCM_LONG

Removed in HAL2.


HAL SAI interrupt identifiers constants

HAL1

HAL2

#define SAI_IT_AFSDET
#define SAI_IT_CNRDY
#define SAI_IT_FREQ
#define SAI_IT_LFSDET
#define SAI_IT_MUTEDET
#define SAI_IT_OVRUDR
#define SAI_IT_WCKCFG
#define HAL_SAI_IT_AFSDET
#define HAL_SAI_IT_CNRDY
#define HAL_SAI_IT_FREQ
#define HAL_SAI_IT_LFSDET
#define HAL_SAI_IT_MUTEDET
#define HAL_SAI_IT_OVRUDR
#define HAL_SAI_IT_WCKCFG

Related concept:


HAL SAI master divider constants

HAL1

HAL2



#define SAI_MASTERDIVIDER_DISABLE
#define SAI_MASTERDIVIDER_ENABLE
typedef enum
{
  HAL_SAI_MASTER_DIVIDER_DISABLE,
  HAL_SAI_MASTER_DIVIDER_ENABLE
} hal_sai_master_divider_t;

Related concept:


HAL SAI master clock output constants

HAL1

HAL2



#define SAI_MCK_OUTPUT_DISABLE
#define SAI_MCK_OUTPUT_ENABLE
typedef enum
{
  HAL_SAI_MCLK_OUTPUT_DISABLED,
  HAL_SAI_MCLK_OUTPUT_ENABLED
} hal_sai_mclk_output_status_t;

Related concept:


HAL SAI master clock oversampling constants

HAL1

HAL2



#define SAI_MCK_OVERSAMPLING_DISABLE
#define SAI_MCK_OVERSAMPLING_ENABLE
typedef enum
{
  HAL_SAI_MCLK_OVERSAMPLING_DISABLE,
  HAL_SAI_MCLK_OVERSAMPLING_ENABLE
} hal_sai_mclk_oversampling_t;

Related concept:


HAL SAI mode constants

HAL1

HAL2



#define SAI_MODEMASTER_RX
#define SAI_MODEMASTER_TX
#define SAI_MODESLAVE_RX
#define SAI_MODESLAVE_TX
typedef enum
{
  HAL_SAI_MODE_MASTER_RX,
  HAL_SAI_MODE_MASTER_TX,
  HAL_SAI_MODE_SLAVE_RX,
  HAL_SAI_MODE_SLAVE_TX
} hal_sai_mode_t;

Related concept:


HAL SAI output drive constants

HAL1

HAL2



#define SAI_OUTPUTDRIVE_DISABLE
#define SAI_OUTPUTDRIVE_ENABLE
typedef enum
{
  HAL_SAI_OUTPUT_DRIVE_DISABLED,
  HAL_SAI_OUTPUT_DRIVE_ENABLED
} hal_sai_output_drive_status_t;

Related concept:


HAL SAI output release status constants

HAL1

HAL2



#define SAI_OUTPUT_NOTRELEASED
#define SAI_OUTPUT_RELEASED
typedef enum
{
  HAL_SAI_TRISTATE_SD_OUTPUT_NOT_RELEASED,
  HAL_SAI_TRISTATE_SD_OUTPUT_RELEASED
} hal_sai_tristate_sd_output_status_t;

Related concept:


HAL SAI PDM clock enable flags constants

HAL1

HAL2




#define SAI_PDM_CLOCK1_ENABLE
#define SAI_PDM_CLOCK2_ENABLE
typedef enum
{
  HAL_SAI_PDM_CLOCK1_CLOCK2_DISABLE,
  HAL_SAI_PDM_CLOCK1_ENABLE,
  HAL_SAI_PDM_CLOCK2_ENABLE,
  HAL_SAI_PDM_CLOCK1_CLOCK2_ENABLE,
} hal_sai_pdm_clock_t;

Related concept:


HAL SAI protocol data size constants

HAL1

HAL2

The SAI protocol data size constants have been used by the HAL_SAI_InitProtocol() function to specify which protocol data size will be used.

The function HAL_SAI_InitProtocol() is no longer available, and these defines have been removed. The user can configure the SAI data size within the HAL_SAI_SetConfig() function.

See also how to migrate the HAL_SAI_InitProtocol() function to HAL2 code : HAL SAI initialization protocol function.

#define SAI_PROTOCOL_DATASIZE_16BIT
#define SAI_PROTOCOL_DATASIZE_16BITEXTENDED
#define SAI_PROTOCOL_DATASIZE_24BIT
#define SAI_PROTOCOL_DATASIZE_32BIT

Removed from HAL2.


HAL SAI block slot active constants

HAL1

HAL2

#define SAI_SLOT_NOTACTIVE
#define SAI_SLOTACTIVE_0
#define SAI_SLOTACTIVE_1
#define SAI_SLOTACTIVE_10
#define SAI_SLOTACTIVE_11
#define SAI_SLOTACTIVE_12
#define SAI_SLOTACTIVE_13
#define SAI_SLOTACTIVE_14
#define SAI_SLOTACTIVE_15
#define SAI_SLOTACTIVE_2
#define SAI_SLOTACTIVE_3
#define SAI_SLOTACTIVE_4
#define SAI_SLOTACTIVE_5
#define SAI_SLOTACTIVE_6
#define SAI_SLOTACTIVE_7
#define SAI_SLOTACTIVE_8
#define SAI_SLOTACTIVE_9
#define SAI_SLOTACTIVE_ALL
#define HAL_SAI_SLOT_NOT_ACTIVE
#define HAL_SAI_SLOT_ACTIVE_0
#define HAL_SAI_SLOT_ACTIVE_1
#define HAL_SAI_SLOT_ACTIVE_10
#define HAL_SAI_SLOT_ACTIVE_11
#define HAL_SAI_SLOT_ACTIVE_12
#define HAL_SAI_SLOT_ACTIVE_13
#define HAL_SAI_SLOT_ACTIVE_14
#define HAL_SAI_SLOT_ACTIVE_15
#define HAL_SAI_SLOT_ACTIVE_2
#define HAL_SAI_SLOT_ACTIVE_3
#define HAL_SAI_SLOT_ACTIVE_4
#define HAL_SAI_SLOT_ACTIVE_5
#define HAL_SAI_SLOT_ACTIVE_6
#define HAL_SAI_SLOT_ACTIVE_7
#define HAL_SAI_SLOT_ACTIVE_8
#define HAL_SAI_SLOT_ACTIVE_9
#define HAL_SAI_SLOT_ACTIVE_ALL

Related concept:


HAL SAI slot size constants

HAL1

HAL2



#define SAI_SLOTSIZE_16B
#define SAI_SLOTSIZE_32B
#define SAI_SLOTSIZE_DATASIZE
typedef enum
{
  HAL_SAI_SLOT_SIZE_16BITS,
  HAL_SAI_SLOT_SIZE_32BITS,
  HAL_SAI_SLOT_SIZE_DATA_SIZE,
} hal_sai_slot_size_t;

Related concept:


HAL SAI mono/stereo mode constants

HAL1

HAL2



#define SAI_STEREOMODE
#define SAI_MONOMODE
typedef enum
{
  HAL_SAI_MONO_MODE_DISABLED,
  HAL_SAI_MONO_MODE_ENABLED,
} hal_sai_mono_mode_status_t;

Related concept:


HAL SAI external synchronization constants

HAL1

HAL2



#define SAI_SYNCEXT_DISABLE
#define SAI_SYNCEXT_OUTBLOCKA_ENABLE
#define SAI_SYNCEXT_OUTBLOCKB_ENABLE
typedef enum
{
  HAL_SAI_SYNC_OUTPUT_DISABLE,
  HAL_SAI_SYNC_OUTPUT_BLOCK_A_ENABLE,
  HAL_SAI_SYNC_OUTPUT_BLOCK_B_ENABLE,
} hal_sai_sync_output_t;

Related concept:


HAL SAI synchronization mode constants

HAL1

HAL2



#define SAI_ASYNCHRONOUS
#define SAI_SYNCHRONOUS

#define SAI_SYNCHRONOUS_EXT_SAI1
#define SAI_SYNCHRONOUS_EXT_SAI2
typedef enum
{
  HAL_SAI_SYNC_NO,
  HAL_SAI_SYNC_INTERNAL,

  HAL_SAI_SYNC_EXTERNAL,

} hal_sai_sync_t;

Note

  • In HAL2, the constants SAI_SYNCHRONOUS_EXT_SAI1 and SAI_SYNCHRONOUS_EXT_SAI2 have been consolidated into a single constant HAL_SAI_SYNC_EXTERNAL.

    The user now only needs to indicate that external synchronization is required.

    The actual SAI instance providing the synchronization (SAI1 or SAI2) is implicitly determined by the currently used SAI instance.

    For example, when the driver uses the SAI1 instance, external synchronization is provided by SAI2, and conversely, when the driver uses SAI2, external synchronization is provided by SAI1

Related concept:


HAL SAI companding constants

HAL1

HAL2



#define SAI_NOCOMPANDING
#define SAI_ULAW_1CPL_COMPANDING
#define SAI_ULAW_2CPL_COMPANDING
#define SAI_ALAW_1CPL_COMPANDING
#define SAI_ALAW_2CPL_COMPANDING
typedef enum
{
  HAL_SAI_COMPANDING_NO,
  HAL_SAI_COMPANDING_ULAW_1CPL,
  HAL_SAI_COMPANDING_ULAW_2CPL,
  HAL_SAI_COMPANDING_ALAW_1CPL,
  HAL_SAI_COMPANDING_ALAW_2CPL,
} hal_sai_companding_t;

Related concept:


HAL SAI mute mode constants

HAL1

HAL2



#define SAI_LAST_SENT_VALUE
#define SAI_ZERO_VALUE
typedef enum
{
  HAL_SAI_MUTE_MODE_LAST_VALUE,
  HAL_SAI_MUTE_MODE_ZERO_VALUE,
} hal_sai_mute_mode_t;

Related concept: